﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using EFramework.Web.TypeExtension;

namespace  RzCorportativo.Views.Cadastros
{
    public partial class Lote : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.CNPJ.Attributes.Add("url", this.ResolveUrl("~/Views/Cadastros/Lote.aspx/ListarFornecedor"));
            if (!this.IsPostBack)
                return;
        }

        [WebMethod]
        public static object ListarFornecedor(string termo)
        {
            RzCorportativo.Lib.Fornecedor parans = new RzCorportativo.Lib.Fornecedor();
            parans.Cnpj = (termo ?? string.Empty).Replace(".", string.Empty).Replace("-", string.Empty).Replace("/", string.Empty);
            var lista = RzCorportativo.Lib.Fornecedor.Listar(parans);
            return lista.Select(s => new { value = s.Cnpj, label = s.Cnpj, FornecedorId = s.FornecedorId, Nome = s.Nome, Cnpj = s.Cnpj }).ToList();
        }

        protected void salvar_Click(object sender, EventArgs e)
        {
            Alert alert = new Alert("erroGeral", this);
            alert.AlertType = AlertType.Error;
            bool redirect = false;
            try
            {
                RzCorportativo.Lib.Lote lote = new RzCorportativo.Lib.Lote();
                lote.LoteId = LongExtension.Parse(this.LoteId.Value, this.LoteId.Value.Length > 0 ? -1 : 0);
                lote.CodigoLote = this.Numero.Text;
                lote.DataEntrega = DateTimeExtension.Parse(this.DataEntrega.Text, DateTime.Now);
                lote.DataValidade = DateTimeExtension.Parse(this.DataValidade.Text, DateTime.Now);
                lote.FornecedorId = IntExtension.Parse(this.FornecedorId.Value, this.FornecedorId.Value.Length > 0 ? -1 : 0);
                lote.Valor = DecimalExtension.Parse(this.Valor.Text, this.Valor.Text.Length > 0 ? -1 : 0);
                lote.QtdItens = IntExtension.Parse(this.Quantidade.Text, 0);
                if (lote.LoteId == -1)
                    alert.Add("LoteId   ", "Código de Lote inválido.<br />Selecione um lote válido para prosseguir");
                if (string.IsNullOrEmpty(lote.CodigoLote))
                    alert.Add("NumeroLote", "Número do Lote");
                if (lote.DataValidade < DateTime.Now.Date)
                    alert.Add("dataValidade", "A data de válidade é menor que a data atual");
                if (lote.DataEntrega < DateTime.Now.Date)
                    alert.Add("dataEntrega", "A data de entrega é menor que a data atual");
                if (lote.FornecedorId <= 0)
                    alert.Add("fornecedorId", "Fornecedor inválido");
                if (lote.Valor == -1)
                    alert.Add("valor", "Valor inválido");
                if (lote.QtdItens == 0)
                    alert.Add("quantidade", "Quantidade de itens no lote inválida");
                if (alert.HasMessage)
                    return;
                if (lote.Salvar())
                {
                    redirect = true;
                }
                else
                {
                    alert.Add("falha", "Não foi possível salvar o item");
                }
            }
            catch (Exception ex)
            {
                alert.Add("exception", ex.Message);
            }
            finally
            {
                if (alert.HasMessage)
                    alert.Show();
            }
            if (redirect)
                this.Response.Redirect(this.ResolveUrl("~/Views/Consulta/Lotes.aspx?op=s"));
        }
    }
}